package com.sakiko.exception;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;
import java.util.Map;

// 全局异常处理类
// @RestControllerAdvice | @ControllerAdvice
// 只能返回 json          | + @ResponseBody 返回 json，不加可以请求转发和重定向
@RestControllerAdvice
public class GlobalExceptionHandler {

    // 处理下空指针异常
    @ExceptionHandler(NullPointerException.class)
    public Map handleNullPointerException(NullPointerException e) {
        System.out.println("GlobalExceptionHandler.handleNullPointerException");
        // 记录日常信息
        System.out.println(e.getMessage());
        // 返回友好提示
        Map map = new HashMap();
        map.put("code", 501);
        map.put("message", e.getMessage());
        // {code:501,message:xxx}
        return map; // adapter -> json
    }

    // 兜底
    @ExceptionHandler(Exception.class)
    public Map handlerException(Exception e) {
        System.out.println("GlobalExceptionHandler.handlerException");
        // 记录日常信息
        System.out.println(e.getMessage());
        // 返回友好提示
        Map map = new HashMap();
        map.put("code", 500);
        map.put("message", e.getMessage());
        // {code:500,message:xxx}
        return map; // adapter -> json
    }
}
